
#ifndef _WIN32_WINNT		// Allow use of features specific to Windows XP or later.                   
#define _WIN32_WINNT 0x0501	// Change this to the appropriate value to target other versions of Windows.
#endif						

#ifdef __cplusplus
extern "C" 
{
#endif

#include <ntddk.h>
//  #include <ntddstor.h>
//  #include <mountdev.h>
//  #include <ntddvol.h>

#ifdef __cplusplus
}
#endif

typedef NTSTATUS (NTAPI * PROC)();
typedef NTSTATUS (NTAPI * TNTOPENKEY)(PHANDLE pKeyHandle, 
                                      ACCESS_MASK anAccess, 
                                      POBJECT_ATTRIBUTES);
typedef NTSTATUS (NTAPI * TNTENUMERATE) (HANDLE KeyHandle,
                                        ULONG Index,
                                        KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
                                        PVOID KeyValueInformation,
                                        ULONG Length,
                                        PULONG );
typedef NTSTATUS (NTAPI * TNTQUERYVALUE) (HANDLE KeyHandle,
                                        PUNICODE_STRING ValueName,
                                        KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
                                        PVOID KeyValueInformation,
                                        ULONG Length,
                                        PULONG );
typedef NTSTATUS (NTAPI * TNTSETVALUE)  (HANDLE KeyHandle,
                                        PUNICODE_STRING ValueName,
                                        ULONG TitleIndex,
                                        ULONG Type, PVOID Data,
                                        ULONG DataSize );
typedef NTSTATUS (NTAPI * TNTDELETEVALUE) (HANDLE KeyHandle, PUNICODE_STRING);

typedef PROC * PNTPROC;

// TODO: reference additional headers your program requires here

DRIVER_INITIALIZE DriverEntry;
DRIVER_UNLOAD drvUnload;
NTSTATUS drvDispatcher(IN PDEVICE_OBJECT aObject, IN PIRP aIrp);
